﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Caching;
using Controllerss;
using Core.Contract.DataContract;
using www.Controllers;
//using www.SService;

namespace www.Admin
{
    public partial class Forget : System.Web.UI.Page
    {
        #region Value
        private readonly ObjectCache _cache = MemoryCache.Default;
        //private readonly HyServicesClient _service1 = new HyServicesClient();
        private readonly LoginController _loginController=new LoginController();
        private readonly Utility _utility = new Utility();
        #endregion
        #region Contructor
        protected void Page_Load(object sender, EventArgs e)
        {
            LoadData();
        }
        #endregion
        #region Event
        protected void Reset(object sender, EventArgs e)
        {
            try
            {
                var pass = "";
                if (CheckExists(ref pass))
                {
                    var content = "Welcome '" + txtUsername.Value + "' <br /> <br /> You are using the password retrieval function on Relax2m.com <br /> <a href='http://relax2m.com/Admin/ChangePassword.aspx?u='" + txtUsername.Value + "'&code='" + pass + "' > Click here password reset</a> <br /> Or copy paste the link into your browser <br /> http://relax2m.com/Admin/ChangePassword.aspx?u='" + txtUsername.Value + "'&code='" + pass + "'";
                    var subject = "Re: Support required to retrieve your password";
                    _utility.SendMail("giaitri2m@gmail.com", "password", txtEmail.Value, content, subject);
                    Message("Yêu cầu lấy lại mật khẩu đã được gửi vào mail bạn vui lòng check mail để lấy lại mật khẩu.");
                }
                else
                {
                    Message("Tên đăng nhập Hoặc Email không tồn tại.");
                }
            }
            catch (Exception)
            {

            }
        }
        #endregion
        #region Business

        protected void LoadData()
        {
            if (_cache["Staff"] == null)
            {
                var lData = _loginController.GetAllUser();
                if (lData.Any())
                {
                    var policy = new CacheItemPolicy { AbsoluteExpiration = DateTimeOffset.Now.AddHours(27) };
                    _cache.Set("Staff", lData.ToList(), policy);
                }
            }
        }

        private Boolean CheckExists(ref string pass)
        {
            if (string.IsNullOrEmpty(txtUsername.Value))
            {
                Message("Bạn phải nhập vào tên đăng nhập.");
                return false;
            }
            if (string.IsNullOrEmpty(txtEmail.Value))
            {
                Message("Bạn phải nhập vào Email.");
                return false;
            }
            if (!_utility.IsValidEmail(txtEmail.Value))
            {
                Message("Email không đúng.");
                return false;
            }
            var lData = (List<RelaxLoginsDataContract>)_cache["Staff"];
            if (lData == null)
                return false;
            var first = lData.FirstOrDefault(p => p.UserName == txtUsername.Value && p.Active == Constant.Active.Display);
            if (first == null)
                return false;

            if (first.Email == txtEmail.Value)
            {
                pass = first.Password;
                return true;
            }
            return false;
        }

        private void Message(string msg)
        {
            Response.Write("<script>alert('" + msg + "');</script>");
        }
        #endregion
    }
}